package com.bestcem.xm.user.dao;

import com.bestcem.xm.user.entity.pojo.UserBookingTrackDO;

import java.util.Date;
import java.util.List;

/**
 * 用户埋点数据服务
 *
 * @author qiongyu.cui <qiongyu.cui@idiaoyan.com>
 * @version v1.0
 * @date 2022/3/17 16:30
 */
public interface UserBookingTrackDao {

    /**
     * 新增用户埋点信息
     *
     * @param userBookingTrackDO 用户埋点信息
     * @return java.lang.String 插入成功的主键id
     * @author cuiqiongyu <qiongyu.cui@idiaoyan.cn>
     * @date 2022/03/17 16:34
     */
    String insert(UserBookingTrackDO userBookingTrackDO);

    /**
     * 有选择想的新增用户埋点信息，为空则不插入
     *
     * @param userBookingTrackDO 用户埋点信息
     * @return java.lang.String 插入成功的主键id
     * @author cuiqiongyu <qiongyu.cui@idiaoyan.cn>
     * @date 2022/03/16 11:24
     */
    String insertSelective(UserBookingTrackDO userBookingTrackDO);

    /**
     * 根据组件id查询用户埋点
     *
     * @param bookingTrackId 用户埋点id
     * @return com.bestcem.xm.user.entity.pojo.UserBookingTrackDO
     * @author cuiqiongyu <qiongyu.cui@idiaoyan.cn>
     * @date 2022/03/17 16:35
     */
    UserBookingTrackDO selectById(String bookingTrackId);

    /**
     * 根据主键有选择的做更新
     *
     * @param userBookingTrackDO 用户埋点信息
     * @return java.lang.Integer 更新成功的条数
     * @author cuiqiongyu <qiongyu.cui@idiaoyan.cn>
     * @date 2022/03/16 11:24
     */
    Integer updateSelectiveById(UserBookingTrackDO userBookingTrackDO);

    /**
     * 根据公司code更新埋点信息
     * @param userBookingTrackDO 用户埋点信息
     * @return com.bestcem.xm.util.ServiceResult<java.lang.Integer>
     * @author cuiqiongyu <qiongyu.cui@idiaoyan.cn>
     * @date 2022/05/28 23:08
     */
    Integer updateSelectiveByOrgCode(UserBookingTrackDO userBookingTrackDO);

    /**
     * 根据相关参数查询用户埋点信息
     *
     * @param userBookingTrackDO 用户埋点信息相关查询参数
     * @return java.util.List<com.bestcem.xm.user.entity.pojo.UserBookingTrackDO>
     * @author cuiqiongyu <qiongyu.cui@idiaoyan.cn>
     * @date 2022/03/17 16:35
     */
    List<UserBookingTrackDO> selectBySelective(UserBookingTrackDO userBookingTrackDO);

    /**
     * 根据创建时间的区间来查询用户埋点信息列表
     *
     * @param startTime 开始时间
     * @param endTime   结束时间
     * @return java.util.List<com.bestcem.xm.user.entity.pojo.UserBookingTrackDO>
     * @author cuiqiongyu <qiongyu.cui@idiaoyan.cn>
     * @date 2022/06/01 14:49
     */
    List<UserBookingTrackDO> selectByCreateTimeInterval(Date startTime, Date endTime);

}
